/**
 * 
 */
package com.nari.heatshare.dao;

import java.util.List;
import java.util.Map;

import com.nari.coreframe.dao.hibernate3.IGenericDao;
import com.nari.heatshare.model.IShareAreaResult;
import com.nari.platform.model.PageCond;
import com.nari.platform.model.ResultWithPageCond;

/**
 * 
 * @author Xiaopeng
 * @date 2013-8-19
 */
public interface IShareAreaResultDao extends IGenericDao<IShareAreaResult, String> {

	/**
	 * 分页查询分摊域分摊结果
	 * @param projectUID 所属项目(可选)
	 * @param communityUID 所属小区(可选)
	 * @param shareAreaUID 所属分摊域(可选)
	 * @param shareName 分摊名称(可选)
	 * @param pageCond
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-9-4
	 */
	public ResultWithPageCond<IShareAreaResult> queryAreaResultPage(String projectUID, 
			String communityUID, String shareAreaUID, String shareName, 
			PageCond pageCond) throws Exception;
	
	/**
	 * 通过所属关系（所属项目、所属小区、所属分摊域）查询分摊域分摊结果列表
	 * @param projectUID 所属项目(可选)
	 * @param communityUID 所属小区(可选)
	 * @param shareAreaUID 所属分摊域(可选)
	 * @return 若所属关系（所属项目、所属小区、所属分摊域）均不存在，则返回空列表
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-9-4
	 */
	public List<IShareAreaResult> queryAreaResultsByBelongs(String projectUID, 
			String communityUID, String shareAreaUID) throws Exception;
	
	/**
	 * 格式化计量收费热价，并以热量单位[元/MWh]返回计量热价
	 * @param measureChargePrice 计量收费热价
	 * @param measureUnit 计量收费单位
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-10-4
	 */
	public double formatMeasureChargePriceToMWh(double measureChargePrice, 
			Integer measureUnit) throws Exception;
	
	/**
	 * 通过唯一标识列表查询分摊域分摊id-shareName映射信息
	 * @param idList 唯一标识列表，若为空列表，则返回空映射
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2013-10-6
	 */
	public Map<String, String> queryShareResultMapByIDList(List<String> idList) throws Exception;
}
